package org.arquimedes.dispatcher;

import java.util.ArrayList;

import org.arquimedes.servicios.ServicioRecibirMensaje;

/**
 * 
 * @author Juan David Ramirez
 * @since 3/07/2011
 *
 */
public class Dispatcher {
	
	/**
	 * Indica si el replicador fue iniciado o no
	 */
	private boolean iniciado=false;
	
	/**
	 * Instancia para obtener el dispatcher desde los hilos
	 */
	private static Dispatcher dispatcher;

	/**
	 * M�todo principal
	 * @param args Argumentos recibidos por consola
	 */
	public static void main(String[] args) {
		Dispatcher d=new Dispatcher();
		d.iniciarDispatcher();
	}
	
	private void iniciarDispatcher() {
		iniciado=true;
		
		ServicioRecibirMensaje.getServicio().iniciarServicio();
		
		ArrayList<String> ipsProcesadores=new ArrayList<String>();
		ipsProcesadores.add("192.168.0.2");// TODO definir las ips de los procesadores
		ipsProcesadores.add("192.168.0.3");
		
		//Inicializa el replicador con las ip pasadas por par�metros
		Replicador.iniciarReplicador(ipsProcesadores);
		
	}

	/**
	 * @return Retorna iniciado
	 */
	public boolean isIniciado() {
		return iniciado;
	}
	
	/**
	 * @param Termina la ejecuci�n del dispatcher
	 */
	public void terminaDispatcher() {
		this.iniciado = false;
		// Bajar sistema (Hilos)
	}

	/**
	 * @return Retorna dispatcher
	 */
	public static Dispatcher getDispatcher() {
		if(dispatcher!=null)
		{
			return dispatcher;
		}
		else
		{
			dispatcher=new Dispatcher();
		}
		return dispatcher;
	}	
}
